Two techniques are in use today for delivering data from a supplier to a consumer: "push" and "pull". Under a "push" model, which is used by services such as PointCast, Castanet, and TIB, information is sent to the recipient whenever it becomes available at the source. Under a "pull" model, which is used by services such as Excite, the data is only transmitted to the recipient in response to an explicit request. These two methods excel at a variety of data retrieval tasks, from supporting random searches ("pull") to delivering dynamic information updates ("push").
However, these data retrieval metaphors are insufficient to support real-time collaboration among multiple users over the Internet. Such applications include shared whiteboards, text and audio chat, shared slide shows, video, distance learning, and collaborative browsing of Web pages. These applications are characterized by the need to establish user groups and exchange information to ensure that all members of a particular group see consistent information (e.g. see the same whiteboard image, see and hear each others' text/audio, see slides/video in a synchronized manner, see the same Web page, etc). In effect, the consistent shared state updates are "pushed" to each client. At the same time, we need to provide freedom for each user to retrieve information by downloading arbitrary Web pages (a "pull" metaphor) and presenting that information to the collaborative application and group.
Typically, these collaborative systems run as stand-alone applications because of their need to exchange specific data types and their special "push" and "pull" requirements. Indeed, these applications provide their own custom user interface and do not interoperate with existing tools.
Systems like America Online's "Virtual Places" (VP) system have attempted to integrate collaboration into existing World-Wide Web browsers such as Netscape Navigator. When the collaboration requires the user to see a new Web page or slide, this system communicates directly with the Web Browser and instructs it to display the particular Web page. To perform this communication, VP relies on a Dynamic Data Exchange (DDE) interface exported by the particular Web Browser. DDE enables applications to exchange a pre-defined set of events, as supported by the particular endpoint applications.
The use of DDE restricts the VP functionality, however. First, DDE is only available on Microsoft Windows platforms. Furthermore, because the DDE interface is application-specific, the particular interface used by VP only works with the Netscape Navigator browser. In summary, the VP system does not provide a portable mechanism for integrating collaboration with the World-Wide Web.
Therefore, a need exists for a method and system for portably adding collaboration capabilities (both "push" and "pull" of information) to World-Wide Web content. In particular, a persistent connection is to be maintained to a shared state server for retrieving data via a "push" mechanism which maintains the freedom to access arbitrary Web content via the "pull" mechanism. Moreover, the collaboration should be provided in a portable manner, in the same way that all other Web content is portable both across hardware platforms and across browser implementations.